开发ambari API
声明:博主写了一些Ambari系列文章,可以在历史文章中查看。
一、概述
如果要开发ambari API的话,我们需要在ambari-server的文件里面添加相关java代码。
然后整体编译ambari,可以不编译ambari-metrics系列。
编译成功后,yum remove ambari-server
yum install ambari-server-*.rpm
ambari-server setup
vim /etc/ambari-server/conf/ambari.properties
server.jdbc.driver.path=/usr/share/java/mysql-jdbc.driver.jar
mysql-jdbc.driver.jar下载地址 将jar包放入/usr/share/java/目录下
ambari-server setup –jdbc-db=mysql –jdbc-driver=/usr/share/java/mysql-jdbc.driver.jar
ambari-server start
访问ambari页面
二、详细开发指南
- 首先在
\ambari-server\src\main\java\org\apache\ambari\server\controller\AmbariServer
内添加自定义的java所在的包路径,需要把新写的类发不成服务。 图片
- 如果你编译成功过一次之后,。本机的maven库里会存下来这些jar包,你就可以直接编译单个server了 (待测)
- 上代码实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| package com.sugon.sdh.api.services;
import javax.ws.rs.POST; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import javax.ws.rs.PathParam; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils;
import java.io.IOException;
@Path("/yarnInfo") public class yarnService { @GET @Path("/show/{ip}") @Produces("application/json") public Map<String, String> testYarn(@PathParam("ip") String ip) { Map<String, String> map = new HashMap<String, String>(); map.put("status", "OK"); map.put("address", "http://"+ip+":8088/ws/v1/cluster/apps"); return map; }
@GET @Path("/yarn/{ip}") @Produces("application/json") public Map<String, Object> yarn(@PathParam("ip") String ip) throws IOException { Map<String, Object> map = new HashMap<String, Object>(); String info = "{}"; CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("http://"+ip+":8088/ws/v1/cluster/apps"); CloseableHttpResponse response = httpclient.execute(httpGet); HttpEntity entity = response.getEntity(); info = EntityUtils.toString(entity); JSONObject json = JSONObject.fromObject(info); map.put("info", json);
response.close(); return map; } } # 说明: 带参的方法:@PathParam("ip") String ip 返回的数据什么类型:@Produces("application/json") 请求的方式:@GET、@POST
|
- 这样等编译成功,并且ambari安装成功后,就可以访问自制API:
ip:8080/api/v1/yarnInfo/show/参数
- 需要的jar包,可以在ambari-server的根目录下的pom.xml文件内添加中央仓库位置,整体编译的时候会自动下载。
问题1:加入是自定义的jar包,ambari-server要引用这个jar包内的类,需要把jar包放在哪个位置?
再见
好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。
白嫖不好,创作不易。各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
如果本篇博客有任何错误,请批评指教,不胜感激 !